/**
 * 为window添加一个与之关联的button的对象，通过button可以控制window
 * 的最大化最小化，window的活动状态变化时对应button也有相应变化；window
 * 创建时toolbar添加与之对应的按钮，window销毁时toolbar删除与之对应按钮,
 * window最小化时隐藏到此按钮上
 * 注意：ToolBar的ID必须是‘taskBar’,window必须允许最小化
 *
 * @author 赵启明
 */

Ext.ns('Ext.ux');

Ext.ux.ButtonBar = function(){

    return {
    	/**
    	 * @argument win window对象
    	 */
		init: function(win){
			var tb = Ext.getCmp('taskBar');
			var button = new Ext.Button({
				iconCls: win.iconCls,
				text: win.title,
				minWidth: 80,
				pressed: true,
				enableToggle: true,
				scope: this,
				toggleHandler: function(b, s){
					if (s) 
						win.show(button.el);
					else 
						win.hide(button.el);
				}
			});
			
			win.on({
				'beforerender': {
					fn: function(){
						tb.add(button);
						if(!win.minimizable)
							return false;
						tb.doLayout();
					}
				},
				'minimize': {
					fn: function(){
						win.hide(button.el);
						button.toggle(false);
					}
				},
				'destroy': {
					fn: function(){
						tb.remove(button);
						tb.doLayout();
					}
				},
				'activate': {
					fn: function(){
						button.toggle(true, true);
					}
				},
				'deactivate': {
					fn: function(){
						button.toggle(false, true);
					}
				}
			});
			
		}
	}
}();
Ext.preg('buttonbar', Ext.ux.ButtonBar);
